package com.study.services;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import javax.jws.soap.SOAPBinding.Use;
import javax.persistence.criteria.CriteriaBuilder.In;
import javax.transaction.Transactional;
import javax.transaction.Transactional;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.study.model.jdao.IUserDAO;
import com.study.model.mdao.UserMDAO;
import com.study.model.pojo.User;

@Service
@Transactional(rollbackOn = Exception.class)
public class UserService {
	
	@Autowired
	IUserDAO userDAO;
	@Autowired
	UserMDAO mdao;
	
	/**
	 * 根据用户名查询员工
	 * @return
	 */
	public User queryByName(String name) {
		try {
		return	userDAO.findByUseName(name);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public User findById(int useId) {
		User us = userDAO.findByUseId(useId);
		return us;
	}
	
	/**
	 * 根据角色id查询该角色以外的用户信息
	 * @param rolid
	 * @return
	 */
	public List<JSONObject> getRolidUser(int rolid) {
		return mdao.selectRoleIdUser(rolid);
	}
	
	
	public List<JSONObject> getFindUserAll() {
		return mdao.selectUserAll();
	}
	
	/**
	 * 根据用户登录名查询用户信息id
	 * @param userlogin
	 * @return
	 */
	public JSONObject getFindUserLogname(String userlogin) {
		return mdao.selectUserloginname(userlogin);
	}
	
	/**
	 * 查询所有用户的角色和用户信息
	 * @return
	 */
	public List<JSONObject> getFindUserRolessee() {
		return mdao.selectRoleuserssee();
	}
	
	
	/**
	 * 添加客户信息
	 * @param usename
	 * @param usepassword
	 * @param usesex
	 * @param usetimein
	 */
	public void setUserAdd(String usename,
			 String usepassword, String usesex,String usphone,
			String loginname,String useimg,int age) {
		mdao.insertUser(usename, usepassword, usesex,new Date(),usphone,loginname,useimg,age);
	}
	/**
	 * 实现将用户基本信息封装
	 * @param useid
	 * @return
	 */
	public JSONObject getFindUserRoleDept(int useid){
		JSONObject object=new JSONObject();		
		JSONObject selectDeptUserId = mdao.selectDeptUserId(useid);		
		 List<JSONObject> selectRoleUserId = mdao.selectRoleUserId(useid);
		 String rol_name="";
		 String use_login="";
		 String use_img="";
		 for (JSONObject jsonObject : selectRoleUserId) {
			 rol_name+=jsonObject.getString("rol_name");
			 use_login=jsonObject.getString("login_name");
			 use_img=jsonObject.getString("use_img");
		}
		System.out.println(selectDeptUserId);
		//System.out.println(selectRoleUserId);
		object.put("usrdept", selectDeptUserId);
		object.put("userrole", rol_name);
		object.put("userlogin", use_login);
		object.put("userimg", use_img);
	//	System.out.println(object.getString("usrdept")+"        "+object.getString("userrole"));
		return object;
	}
	/**
	 * 根据用户id修改用户基本信息
	 * @param username
	 * @param userphone
	 * @param useid
	 * @return 
	 */
	public int setUpdateUserId(String username,String userphone,int useid,String loginname){
		return mdao.updateUserId(username, userphone, useid,loginname);
	}
	
	
	
	/**
	 * 根据用户id修改用户角色
	 * @param roleid
	 * @param userid
	 */
	public void setUpdateRoelUserid(int roleid,int userid){
		mdao.updateRoleUserId(roleid, userid);
	}
	
	/**
	 * 根据用户id修改用户部门
	 * @param deptid
	 * @param userid
	 */
	public void setUpdateDeptUserId(int deptid,int userid){
		mdao.updateDeptUserId(deptid, userid);
	}
	
	/**
	 * 判断用户名和密码是否正确
	 * @param username
	 * @param password
	 * @return
	 */
	public User isExsit(String username, String password) {
		return userDAO.findByLoginNameAndUsePassword(username, password);
	}
	
	/**
	 * 判断用户名是否存在
	 * @param username
	 * @return
	 */
	public boolean findByName(String username) {
		User user = userDAO.findByUseName(username);
		if (user != null ) {
			return true;
		}
		return false;
	}
	public boolean findByLoginName(String username) {
		User user = userDAO.findByLoginName(username);
		if (user != null ) {
			return true;
		}
		return false;
	}
	
	/**
	 * 根据用户id查询用户角色
	 * @param username
	 * @return 
	 */
	public List<String> getFindUsername(int userid) {
		List<JSONObject> selectRoleUserId = mdao.selectRoleUserId(userid);
		String tutl="";
		List<String> list=new ArrayList<>();
		for (JSONObject jsonObject : selectRoleUserId) {
			System.out.println(jsonObject.getString("rol_id")+"               rol_id ");
			//tutl+=jsonObject.getString("rol_id")+",";
			list.add(jsonObject.getString("rol_id"));
		}		
		return list;
	}
	
	
	/**
	 * 实现用户和角色邦定
	 * @param useid
	 * @param rolid
	 * @return
	 */
	public int setUserRole(int useid,int rolid) {
		return mdao.insertRoleUser(useid, rolid);
	}	
	
	/**
	 * 实现用户和部门邦定
	 * @param useid
	 * @param rolid
	 * @return
	 */
	public int setUserDept(int useid,int depid) {
		return mdao.insertDeptUser(useid, depid);
	}	
	/**
	 * 根据角色id查询对应的用户
	 * @param rolid
	 * @return
	 */
	public List<JSONObject> getFindRoleUser(int rolid) {
		return mdao.selectRoleUserid(rolid);
	}
	
	/**
	 * 实现解除用户和角色的绑定
	 * @param use_id
	 * @param rol_id
	 */
	public void setDelectUserRole(int use_id,int rol_id) {
		mdao.delectUserRole(use_id, rol_id);
	}

	
	public JSONObject getfindUsreid(String userid) {
		return mdao.getfindUsreid(userid);
	}
	
	/**
	 * 通过用户id查询用户和部门
	 * @param userid
	 * @return
	 */
	public JSONObject getfindUseriddept(String userid) {
		List<JSONObject> selectRoleUserId = mdao.selectRoleUserId(Integer.parseInt(userid));
		JSONObject obj=new JSONObject();
		String str="";
		for (JSONObject jsonObject : selectRoleUserId) {
			str+=jsonObject.getString("rol_name")+",";
		}
		obj.put("role",str);
		obj.put("user", mdao.selectDeptUserId(Integer.parseInt(userid)));
		return  obj;
	}
     /**
      * Wcx
      * 根据id查询客户
      * @param useid
      * @return
      */
	public JSONObject selectName(int useid) {
		
		return mdao.selectName(useid);
	}
	
	/**
	 * 获取用户总数
	 * @return
	 */
	public int selectCount() {
		return mdao.selectCount();
	}
}
